iT邦幫忙

2022 iThome 鐵人賽

DAY 19
1
Modern Web

Ruby新手村的礦工日記系列 第 19

[ Day 19 ] Rails : 迷路了?先問問 Route 吧!(上)

  • 分享至 

  • xImage
  •  

上一章,有提到 MVC 架構,而Rails 貼心的幫你準備了引導人員 (Route) ,我們今天好好地來細說他的工作內容吧!
先來介紹一下他的工作環境吧!

Routes 工作環境

在開啟一個新專案時,如果你是使用 VS code 你可以在左邊的檔案夾中找到 config/routes.rb
但要快速成為資深礦工,這樣的做法太慢了!
你可以使用 command + P 並打 Routes ,就會快速找到他。
其他的檔案也可以使用上面的作法。

進到這個檔案裡,會長這樣:
空空的routes
接下來,你就可以在這裡面寫一些你想要的指引。

Route 說穿了,就是整個網站對外公開的網站路徑對照表,當使用者連上你的網站的時候,Rails 會解析使用者所輸入的網址及參數,再根據解析的結果,去找到該負責處理的單位(哪個 Controller 跟 Action)。

顯示路徑吧!!!

顯示路徑有兩種方法:

  1. 在網址上打 http://localhost:3000/rails/info/routes
  2. 在終端機上打以下的指令:
$ rails routes           # 列出所有路徑
$ rails routes -c posts  # 搜尋路徑中特定 Controller

如何設置路徑?

設置路徑的方式有很多種,我們先從基本的開始
假設今天有一個網址長這樣 https://example.com/posts/225
Rails 會根據 routes.rb 的檔案內容,進而去分析網址後面的/posts/225 要交給誰處理,假設檔案內容長這樣:

Rails.application.routes.draw do
  get "/posts", to: "posts#index"
  get "/posts/:id", to: "posts#show"
end

根據檔案內容,翻譯出來的意思會是這樣的:
使用者輸入 /posts 後,它會交由 PostsController 上的 index 方法去處裡。
使用者輸入 /posts/225 後,它會轉由 PostsController 上的 show 方法,並且把 225 當做參數(:id)傳給 Controller

製作路徑除了上面介紹的方法外,其實還有更方便的方法,但是在介紹之前,你可能需要知道 RESTful。

RESTful 是??

REST 是一種軟體架構風格,目的是幫助在世界各地不同軟體、程式在網際網路中能夠互相傳遞訊息。每一個網頁都可視為一個資源(resource)提供使用者使用,而你可以透過 URL(Uniform Resource Locator),也就是這些資源的地址,來取得這些資源並在你的瀏覽器上使用,而符合 REST 風格的網站架構可以稱為 RESTful。

何謂 REST 風格?

符合REST設計風格,可以從以下三個方面資源進行定義:

  • 直觀簡短的資源位址:URI,比如:http://example.com/resources。
  • 傳輸的資源:Web服務接受與返回的網際網路媒體類型,比如:JSON,XML,YAML等。
  • 對資源的操作:Web服務在該資源上所支援的一系列請求方法(比如:POST,GET,PUT或DELETE)。

請求方法

對資源進行操作,常見的有以下幾種:

  • GET 讀取資源
  • POST 新增資源
  • PUT 替換資源
  • PATCH 更換資源部分內容
  • DELETE 刪除資源

Rails 也是依照 RESTful 去設計的,這樣設計可讓網址變得更直觀,使開發上更加的輕鬆。

參考資料:

  1. Rails guide
  2. 為你自己學 Ruby on Rails
  3. 什麼是REST? 認識 RESTful API 路由語義化設計風格
  4. 表現層狀態轉換

上一篇
[ Day 18 ] Rails : MVC是什麼?
下一篇
[ Day 20 ] Rails : 迷路了?先問問 Route 吧!(中)
系列文
Ruby新手村的礦工日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言